Virtualization allows multiplexing of the underlying host machine between different virtual machines. The host computer allocates a certain amount of its resources to each of the virtual machines. Each virtual machine is then able to use the allocated resources to execute applications, including operating systems (referred to as guest operating systems). The software layer providing the virtualization is commonly referred to as a hypervisor and is also known as a virtual machine monitor (VMM), a kernel-based hypervisor or a host operating system. The hypervisor emulates the underlying hardware of the host computer, making the use of the virtual machine transparent to the guest operating system and the user of the computer.
In some systems, the host is a centralized server that is partitioned into multiple virtual machines to provide virtual desktops to the users. The centralized host manages the allocation of disk storage to the virtual machines. Some hosts pre-allocate a fixed amount of disk storage to each virtual machine. However, the guest operating system of a virtual machine often expands and outgrows the pre-allocated storage space. One reason for the expansion is that a conventional guest operating system does not reuse the block of a deleted file once the file is deleted. Rather, the reclaim of the block is usually delayed. This means that the guest operating system will allocate other disk blocks, instead of reusing the blocks of the deleted files. The lack of block reuse can waste a significant amount of space at the host level. As a result, the accumulation of the blocks of deleted files in the disk storage can reduce the speed of disk backup operations.